package com.ubxtech.annotation;

/**
 * @author Victor.Xiao
 * @since 2023-11-24 15:58
 **/
public enum MsgTypeEnum {

    /** 调用不同环境的服务,发送需要region参数,比如先发送给消息到海外节点mq,再消费消息调用服务接口 */
    SERVICE("服务内部消息,可以调用海外服务接口", 1),
    /** */
    WEBSOCKET("websocket消息", 2),

    /** */
    SMS("短信", 3),

    /** */
    MAIL("邮件", 4),
    /** */
    WECOM_MSG("企业微信消息", 5),
    /** 同一个环境内部服务同步调用,相当于client调用 */
    SERVICE_SAME_ENV_SYNC("同一个环境同步调用服务接口", 6),
    /** 同一个环境内部服务异步调用,就是先发送到mq再回调 */
    SERVICE_SAME_ENV_ASYNC("同一个环境异步调用服务接口", 7),

    /** */
    MSG_BROADCAST("消息中心内部广播类型", 50);


    MsgTypeEnum(String name, Integer code) {
        this.code = code;
        this.name = name;
    }

    private String name;
    private int code;

    public String getName() {
        return name;
    }

    public int getCode() {
        return code;
    }

    public static MsgTypeEnum parse(int code) {
        for (MsgTypeEnum type : MsgTypeEnum.values()) {
            if (code == type.getCode()) {
                return type;
            }
        }
        return MsgTypeEnum.SERVICE;
    }
}
